import type { AppRouteModule } from "/@/router/types"

import { getParentLayout, LAYOUT } from "/@/router/constant"
import { RoleEnum } from "/@/enums/roleEnum"
import { t } from "/@/hooks/web/useI18n"

const permission: AppRouteModule = {
  path: "/permission",
  name: "Permission",
  component: LAYOUT,
  redirect: "/permission/front/page",
  meta: {
    orderNo: 15,
    icon: "ion:key-outline",
    title: t("routes.demo.permission.permission"),
  },

  children: [
    {
      path: "front",
      name: "PermissionFrontDemo",
      component: getParentLayout("PermissionFrontDemo"),
      meta: {
        title: t("routes.demo.permission.front"),
      },
      children: [
        {
          path: "page",
          name: "FrontPageAuth",
          component: () => import("/@/views/demo/permission/front/index.vue"),
          meta: {
            title: t("routes.demo.permission.frontPage"),
          },
        },
        {
          path: "btn",
          name: "FrontBtnAuth",
          component: () => import("/@/views/demo/permission/front/Btn.vue"),
          meta: {
            title: t("routes.demo.permission.frontBtn"),
          },
        },
        {
          path: "auth-pageA",
          name: "FrontAuthPageA",
          component: () => import("/@/views/demo/permission/front/AuthPageA.vue"),
          meta: {
            title: t("routes.demo.permission.frontTestA"),
            roles: [RoleEnum.SUPER],
          },
        },
        {
          path: "auth-pageB",
          name: "FrontAuthPageB",
          component: () => import("/@/views/demo/permission/front/AuthPageB.vue"),
          meta: {
            title: t("routes.demo.permission.frontTestB"),
            roles: [RoleEnum.TEST],
          },
        },
      ],
    },
    {
      path: "back",
      name: "PermissionBackDemo",
      component: getParentLayout("PermissionBackDemo"),
      meta: {
        title: t("routes.demo.permission.back"),
      },
      children: [
        {
          path: "page",
          name: "BackAuthPage",
          component: () => import("/@/views/demo/permission/back/index.vue"),
          meta: {
            title: t("routes.demo.permission.backPage"),
          },
        },
        {
          path: "btn",
          name: "BackAuthBtn",
          component: () => import("/@/views/demo/permission/back/Btn.vue"),
          meta: {
            title: t("routes.demo.permission.backBtn"),
          },
        },
      ],
    },
  ],
}

export default permission
